import Dep from "./dep.js"

export default class Watcher {
    constructor(vm, key, cb) {
        this.vm = vm
        this.key = key
        this.cb = cb
        // 把watcher对象记录到Dep类的静态属性target
        Dep.target = this
        // 触发get方法，在get中调用addSub
        this.oldValue = vm[key]
        // 清空Dep.target，避免重复添加
        Dep.target = null
    }
    // 数据变化时更新视图
    update(...args) {
        const newValue = this.vm[this.key]
        if (newValue !== this.oldValue) {
            this.cb(newValue)
        }
    }
}